在Day2:用七個官方範例初步認識 Vue.js已經有看過 Component 的範例。Component 在 Vue 中扮演很重要的腳色,使我們可封裝重用程式碼,且同時具有極高的彈性。
在 Vue 中元件有兩種註冊方式,全域
和區域
。
要註冊一個全域元件,可以透過 Vue 的 Global API 實現,格式為Vue.component('tagName', {options})
。
複習一下 Day2 的第七個範例:
<div id="app-7">
<ol>
<todo-item
v-for="item in groceryList"
v-bind:todo="item"
v-bind:key="item.id">
</todo-item>
</ol>
</div>
Vue.component('todo-item', {
props: ['todo'],
template: '<li>{{ todo.text }}</li>'
})
var app7 = new Vue({
el: '#app-7',
data: {
groceryList: [
{ id: 0, text: 'Vegetables' },
{ id: 1, text: 'Cheese' },
{ id: 2, text: 'Whatever else humans are supposed to eat' }
]
}
})
附上 fiddle (https://jsfiddle.net/hunterliu/6bmrr9ar/1/)
區域註冊的方式則是將 Vue Component 放在 Vue Instance 的選項物件屬性components
中,簡單把全域註冊的元件改為區域註冊,範例如下:
var app7 = new Vue({
el: '#app-7',
data: {
groceryList: [
{ id: 0, text: 'Vegetables' },
{ id: 1, text: 'Cheese' },
{ id: 2, text: 'Whatever else humans are supposed to eat' }
]
},
components: {
'todo-item': {
props: ['todo'],
template: '<li>{{ todo.text }}</li>'
}
}
})
附上 fiddle (https://jsfiddle.net/hunterliu/6bmrr9ar/2/)
當定義 Component 的時候有些注意事項,例如在 , , , 這些元素裡包含的元素是有限制的,像是 , , 只能出現在特定元素內部。
解決辦法可以使用特殊的is
特性,範例如下:
附上 fiddle (https://jsfiddle.net/hunterliu/yp1a42tx/1/)
代補